home *** CD-ROM | disk | FTP | other *** search
/ Macworld Expo - Develope…Central & Net Innovations / Developer Central and Net Innovators (MacWorld Expo) (January 1999).iso / Developer Central / Bowers Development / Demo AppMaker / Examples / Pascal OS8 / Everything / EverythingDoc.p < prev    next >
Encoding:
Text File  |  1998-10-30  |  4.5 KB  |  262 lines  |  [TEXT/CWIE]

  1. { EverythingDoc.p -- document-level functions }
  2.  
  3. Unit EverythingDoc;
  4. Interface
  5.  
  6. Uses
  7.     Types,
  8.     Events,
  9.     Files,
  10.     Menus,
  11.     EverythingEngine,
  12.     AMDoc;
  13.  
  14. type
  15.     EverythingDoc        = object (AMDoc)
  16.  
  17.     {data members}
  18.         mButtonsPtr:        WindowPtr;
  19.         mCheckboxesPtr:        WindowPtr;
  20.         mRadiosPtr:        WindowPtr;
  21.         mEditTextPtr:        WindowPtr;
  22.         mStuffPtr:        WindowPtr;
  23.         mBarsPtr:        WindowPtr;
  24.  
  25.     {methods - public}
  26.         Procedure Initialize; Override;
  27.  
  28.         Function  DoCommand        (inCommand:    longint): Boolean; Override;
  29.  
  30.     {methods - internal}
  31.         Procedure OpenWindows; Override;
  32.         Function  WouldCloseDoc        (windPtr:    WindowPtr): Boolean; Override;
  33.  
  34.         Function  GetEngine: EverythingEngine;
  35.  
  36.         Procedure DoModalButtons;
  37.         Procedure DoModalCheckboxes;
  38.         Procedure DoModalRadios;
  39.         Procedure DoModalText;
  40.         Procedure DoModalStuff;
  41.         Procedure DoModalMoreStuff;
  42.     end;
  43.  
  44. {----------}
  45. Function NewEverythingDoc: EverythingDoc;
  46.  
  47. {----------}
  48. Implementation
  49.  
  50. Uses
  51.     ResourceDefs,
  52.     Globals,
  53.  
  54.     ModalButtons,
  55.     ModalCheckboxes,
  56.     ModalRadios,
  57.     ModalText,
  58.     ModalStuff,
  59.     ModalBars,
  60.     DDocData,
  61.     Buttons,
  62.     DDocData,
  63.     Checkboxes,
  64.     DDocData,
  65.     Radios,
  66.     DDocData,
  67.     EditText,
  68.     DDocData,
  69.     Stuff,
  70.     DDocData,
  71.     Bars,
  72.     Miscellany;
  73.  
  74. {----------}
  75. Function NewEverythingDoc: EverythingDoc;
  76. var
  77.     doc:        EverythingDoc;
  78. begin
  79.     New (doc);
  80.     if doc <> nil then begin
  81.         doc.Initialize;
  82.     end;
  83.     NewEverythingDoc := doc;
  84. end;
  85.  
  86. {----------}
  87. Procedure EverythingDoc.Initialize;
  88. begin
  89.     inherited Initialize;
  90.  
  91.     mEngine := NewEverythingEngine;
  92.  
  93.     mButtonsPtr := nil;
  94.     mCheckboxesPtr := nil;
  95.     mRadiosPtr := nil;
  96.     mEditTextPtr := nil;
  97.     mStuffPtr := nil;
  98.     mBarsPtr := nil;
  99. end;
  100.  
  101. {----------}
  102. Function  EverythingDoc.GetEngine: EverythingEngine;
  103. begin
  104.     GetEngine := EverythingEngine (mEngine);
  105. end;
  106.  
  107. {----------}
  108. Procedure EverythingDoc.OpenWindows;
  109. var
  110.     engine:        EverythingEngine;
  111. Begin
  112.     engine := GetEngine;
  113.  
  114.     { replace this code to get data from someplace useful }
  115.  
  116.     CreateButtons (self, engine.GetDocData);
  117.     CreateCheckboxes (self, engine.GetDocData);
  118.     CreateRadios (self, engine.GetDocData);
  119.     CreateEditText (self, engine.GetDocData);
  120.     CreateStuff (self, engine.GetDocData);
  121.     CreateBars (self, engine.GetDocData);
  122. End;
  123.  
  124. {----------}
  125. Function EverythingDoc.WouldCloseDoc (
  126.     windPtr:        WindowPtr): Boolean;
  127. var
  128.     numOpen:        integer;
  129. Begin
  130.     numOpen := 0;
  131.  
  132.     if mButtonsPtr <> nil then        numOpen := numOpen + 1;
  133.     if mCheckboxesPtr <> nil then        numOpen := numOpen + 1;
  134.     if mRadiosPtr <> nil then        numOpen := numOpen + 1;
  135.     if mEditTextPtr <> nil then        numOpen := numOpen + 1;
  136.     if mStuffPtr <> nil then        numOpen := numOpen + 1;
  137.     if mBarsPtr <> nil then        numOpen := numOpen + 1;
  138.  
  139.     WouldCloseDoc := (numOpen <= 1);
  140. End;
  141.  
  142. {----------}
  143. Procedure EverythingDoc.DoModalButtons;
  144. var
  145.     dummy:        integer;
  146. begin
  147.     if GetModalButtons then begin
  148.         { do something }
  149.     end;
  150. end;
  151.  
  152. {----------}
  153. Procedure EverythingDoc.DoModalCheckboxes;
  154. var
  155.     data:        DModalCheckboxesData;
  156. begin
  157.     data := NewDModalCheckboxesData;
  158.  
  159.     { add your code to set data fields }
  160.  
  161.     if GetModalCheckboxes (data) then begin
  162.         { do something with data }
  163.     end;
  164.     Dispose (data);
  165. end;
  166.  
  167. {----------}
  168. Procedure EverythingDoc.DoModalRadios;
  169. var
  170.     data:        DModalRadiosData;
  171. begin
  172.     data := NewDModalRadiosData;
  173.  
  174.     { add your code to set data fields }
  175.  
  176.     if GetModalRadios (data) then begin
  177.         { do something with data }
  178.     end;
  179.     Dispose (data);
  180. end;
  181.  
  182. {----------}
  183. Procedure EverythingDoc.DoModalText;
  184. var
  185.     data:        DModalTextData;
  186. begin
  187.     data := NewDModalTextData;
  188.  
  189.     { add your code to set data fields }
  190.  
  191.     if GetModalText (data) then begin
  192.         { do something with data }
  193.     end;
  194.     Dispose (data);
  195. end;
  196.  
  197. {----------}
  198. Procedure EverythingDoc.DoModalStuff;
  199. var
  200.     data:        DModalStuffData;
  201. begin
  202.     data := NewDModalStuffData;
  203.  
  204.     { add your code to set data fields }
  205.  
  206.     if GetModalStuff (data) then begin
  207.         { do something with data }
  208.     end;
  209.     Dispose (data);
  210. end;
  211.  
  212. {----------}
  213. Procedure EverythingDoc.DoModalMoreStuff;
  214. var
  215.     data:        DModalBarsData;
  216. begin
  217.     data := NewDModalBarsData;
  218.  
  219.     { add your code to set data fields }
  220.  
  221.     if GetModalBars (data) then begin
  222.         { do something with data }
  223.     end;
  224.     Dispose (data);
  225. end;
  226.  
  227. {----------}
  228. Function EverythingDoc.DoCommand (
  229.     inCommand:        longint): Boolean;
  230. begin
  231.     DoCommand := true;
  232.     case inCommand of
  233.         cmdSave:
  234.                 DoSave;
  235.         cmdSaveAs:
  236.                 DoSaveAs;
  237.         cmdRevert:
  238.                 DoRevert;
  239.         cmdPageSetup:
  240.                 DoPageSetup;
  241.         cmdPrint:
  242.                 DoPrint;
  243.         cmdModalButtons:
  244.                 DoModalButtons;
  245.         cmdModalCheckboxes:
  246.                 DoModalCheckboxes;
  247.         cmdModalRadios:
  248.                 DoModalRadios;
  249.         cmdModalText:
  250.                 DoModalText;
  251.         cmdModalStuff:
  252.                 DoModalStuff;
  253.         cmdModalMoreStuff:
  254.                 DoModalMoreStuff;
  255.  
  256.         otherwise
  257.                 DoCommand := false;
  258.     end; {case}
  259. end;
  260.  
  261. end.
  262.